import { ModuleMetadata, Type } from '@nestjs/common'

export interface UsersClientModuleOptions {
  natsServers: string[]
}

export interface UsersClientModuleOptionsFactory {
  createUsersClientOptions(): UsersClientModuleOptions | Promise<UsersClientModuleOptions>
}

export interface UsersClientModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
  useExisting?: Type<UsersClientModuleOptionsFactory>
  useClass?: Type<UsersClientModuleOptionsFactory>
  inject?: any[]
  useFactory?: (...args: any[]) => Promise<UsersClientModuleOptions> | UsersClientModuleOptions
}
